<?xml version="1.0" encoding="UTF-8"?>

<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <description>Main Spring file for Worker grid configuration.</description>

    <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="connectorConfiguration"><null/></property>

        <property name="localHost" value="127.0.0.1"/>

        <property name="networkTimeout" value="20000"/>

        <!--
            Events and Performance
            Note that by default all events in Ignite are enabled and therefore generated and stored by
            whatever event storage SPI is configured. Ignite can and often does generate thousands events per
            seconds under the load and therefore it creates a significant additional load on the system. If
            these events are not needed by the application this load is unnecessary and leads to significant
            performance degradation.

            It is highly recommended to enable only those events that your application logic requires by using
            either IgniteConfiguration.getExcludeEventTypes() or IgniteConfiguration.getIncludeEventTypes() methods
            in Ignite configuration. Note that certain events are required for Ignite's internal operations
            and such events will still be generated but not stored by event storage SPI if they are disabled in
            Ignite configuration.
        -->
        <property name="includeEventTypes">
            <list/>
        </property>

        <!-- Disable cache. -->
        <property name="cacheConfiguration">
            <list/>
        </property>

        <!-- Disable properties. -->
        <property name="includeProperties">
            <list/>
        </property>

        <!-- Disable pools -->
        <property name="publicThreadPoolSize" value="100"/>

        <property name="systemThreadPoolSize" value="100"/>

        <property name="peerClassLoadingThreadPoolSize" value="100"/>

        <property name="metricsUpdateFrequency" value="10000"/>

        <property name="failureDetectionTimeout" value="60000"/>

        <!-- Discovery SPI configuration. -->
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="networkTimeout" value="20000"/>
                <property name="socketTimeout" value="5000"/>
                <property name="ackTimeout" value="5000"/>

                <property name="statisticsPrintFrequency" value="60000"/>

                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                        <property name="addresses">
                            <list>
                                <value>127.0.0.1:47500</value>
                                <value>127.0.0.1:47501</value>
                                <value>127.0.0.1:47502</value>
                                <value>127.0.0.1:47503</value>
                                <value>127.0.0.1:47504</value>
                                <value>127.0.0.1:47505</value>
                                <value>127.0.0.1:47506</value>
                                <value>127.0.0.1:47507</value>
                                <value>127.0.0.1:47508</value>
                            </list>
                        </property>
                    </bean>
                </property>
            </bean>
        </property>

        <property name="loadBalancingSpi">
            <bean class="org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi">
                <property name="perTask" value="false"/>
            </bean>
        </property>
    </bean>
</beans>
